package structural

type IProxy interface {
	handle() error
}

type SProxy struct{}

func (s *SProxy) handle() error {
	return nil
}

// ProxyAgent 代理人
type ProxyAgent struct {
	proxy IProxy
}

// NewProxyAgent 初始化代理人对象
func NewProxyAgent(proxy IProxy) *ProxyAgent {
	return &ProxyAgent{
		proxy: proxy,
	}
}

func (p *ProxyAgent) Handle() error {
	// before 应该干点什么

	if err := p.proxy.handle(); err != nil {
		return err
	}

	// after 应该做点什么
	return nil
}
